package com.examination.client.util;

import com.auth0.jwt.interfaces.Claim;
import com.examination.client.domian.dto.UserTokenDTO;
import com.examination.client.entity.UserInfo;

import java.util.Map;
import java.util.Optional;

/**
 * @author guoxiaodong
 * @Description:
 * @Date: 2021/10/20
 */
public class UserInfoUtil {


    public static void setUser(String toekn, UserInfo userInfo) {
        Optional<Map<String, Claim>> optional = JwtTokenUtil.getClaims(toekn);
        if (optional.isPresent()) {
            Map<String, Claim> map = optional.get();
            Integer userId = map.get("userId").asInt();
            String userName = map.get("userName").asString();
            Integer userType = map.get("userType").asInt();
            Integer siteId = map.get("siteId").asInt();
            Integer nextSiteId = map.get("nextSiteId").asInt();
            Integer parentSiteId = map.get("parentSiteId").asInt();
            UserTokenDTO userTokenDTO = new UserTokenDTO();
            userTokenDTO.setUserId(userInfo.getUserId());
            userTokenDTO.setUserName(userInfo.getUserName());
            userTokenDTO.setSiteId(userInfo.getSiteId());
            userTokenDTO.setUserType(userInfo.getUserType());
            userTokenDTO.setParentSiteId(parentSiteId);
            userTokenDTO.setAppSite(userInfo.getAppSite());
            userTokenDTO.setNextSiteId(userInfo.getNextSiteId());
            if(parentSiteId==0){
                userTokenDTO.setSiteType(1);
            }else {
                userTokenDTO.setSiteType(2);
            }
            ThreadLocalUtils.set("user",userTokenDTO);
        }

    }


    public static UserTokenDTO getUser(){
           return (UserTokenDTO) ThreadLocalUtils.getCache("user");

    }

    public static Integer getNextSiteId(){ return getUser().getNextSiteId(); }

    public static Integer getSiteId(){ return getUser().getSiteId(); }

    public static Integer getUserid(){
        return getUser().getUserId();
    }

    public static Integer getUserType(){
        return getUser().getUserType();
    }

    public static Integer getSiteType(){
        return getUser().getSiteType();
    }

    public static String getUserName(){
        return getUser().getUserName();
    }

    public static Integer getParentSiteId(){
        return getUser().getParentSiteId();
    }

    public static String getAppSite(){
        return getUser().getAppSite();
    }


}
